package model

import (
	"time"

	"gorm.io/gorm"
)

// TaskLog 任务执行日志
type TaskLog struct {
	ID        uint          `gorm:"primarykey" json:"id"`
	TaskID    uint          `gorm:"index" json:"task_id"` // 关联的任务ID
	StartTime time.Time     `json:"start_time"`           // 开始执行时间
	EndTime   time.Time     `json:"end_time"`             // 结束执行时间
	Duration  time.Duration `json:"duration"`             // 执行时长
	Success   bool          `json:"success"`              // 执行是否成功
	Output    string        `json:"output"`               // 执行输出
	Error     string        `json:"error"`                // 错误信息
	CreatedAt time.Time     `json:"created_at"`
	UpdatedAt time.Time     `json:"updated_at"`
}

// GetRecentTaskLogs 获取最近的日志记录
func GetRecentTaskLogs(db *gorm.DB, limit int) ([]TaskLog, error) {
	var logs []TaskLog
	err := db.Order("id desc").Limit(limit).Find(&logs).Error
	return logs, err
}

// GetTaskLogs 获取特定任务的最近日志
func GetTaskLogs(db *gorm.DB, taskID uint, limit int) ([]TaskLog, error) {
	var logs []TaskLog
	err := db.Where("task_id = ?", taskID).Order("id desc").Limit(limit).Find(&logs).Error
	return logs, err
}

// TaskLogStatus 任务日志状态
type TaskLogStatus int

const (
	TaskLogStatusRunning TaskLogStatus = iota
	TaskLogStatusSuccess
	TaskLogStatusFailed
)
